/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.unitecnologica.reportes;

import java.awt.Image;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author osalcedo
 */
public class AdmReportes {
    private final Connection conexion;

    public AdmReportes(Connection con){
        conexion=con;
    }

    public void imprimirComprobanteEstudiante(String idEstudiante, String codPeriodo){
        try {
            JasperReport reporte = (JasperReport)JRLoader.loadObject(getClass().getResource("comprobante_estudiante.jasper"));
            ImageIcon img= new javax.swing.ImageIcon(getClass().getResource("logo_utb.jpg"));
            Image logo=img.getImage();
            Map parametros = new HashMap();
            parametros.put("cod_periodo", codPeriodo);
            parametros.put("id_estudiante", idEstudiante);
            parametros.put("logo", logo);
            JasperPrint impresion = JasperFillManager.fillReport(reporte, parametros,conexion);
            JasperViewer.viewReport(impresion, false);
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

    public void generarReporte(String nombreReport, Map parametros){
        try {
            JasperReport reporte = (JasperReport)JRLoader.loadObject(getClass().getResource(nombreReport));            
            JasperPrint impresion = JasperFillManager.fillReport(reporte, parametros,conexion);
            JasperViewer.viewReport(impresion, false);
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

    public Map getParametrosUsuario(String nombreReport){
        HashMap<String,String> parametros= new HashMap<String,String>();
        try {
            JasperReport reporte = (JasperReport)JRLoader.loadObject(getClass().getResource(nombreReport+".jasper"));
            JRParameter[] params = reporte.getParameters();
            for(int i=0;i<params.length;i++){
                if(!params[i].isSystemDefined())
                    parametros.put(params[i].getName(),params[i].getName());
            }
            return parametros;
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        return parametros;
    }
}
